GCP DataFlow
最小構成?で stream対応ということは、ずっと動かすという意味?で 730hoursにした場合、こんな感じのコスト?
仕事で使いたいけど、提案できるケースがみつけられない。というか、個人でやってみるケースを作らないと...
https://gyazo.com/e0765741ba60d9b49ef6d2b5edf708d9
pythonでstreamingで、pubsubからBigQueryに送りたい。
getting started is easy 本当か...
pip install --user apache-beam[gcp] 2.2.0が入るのだが、、
pip install --user apache-beam[gcp]==2.5
Could not find a version that satisfies ..... apache-beam gcp==2.5 (from versions: 0.6.0, 2.0.0, 2.1.0, 2.1.1, 2.2.0)
sudo の pip(python)にしたら、python2.7のpathの方で、2.9が install できた。
仮想環境作ってやってないのがいかんかったので、やり直し。
確か、python3はだめだった気がするので、python2で構築か。
python 2 -m venv venv だと、python2にはvenvがないので、virtualenv
virutalenv venv --python=python2.7 && source venv/bin/activate
pip install apache-beam[gcp] で、2.9が入った。
ここをやればよいか。
streamingでないもの、python wordcount.py --output=out.txt はok
----------------------------
テンプレートを使えば、大まかには対応できそうな感じ。ソースはjavaになるのは、、しょうがない。
あと、UserDefinedFunctionを javascriptで書けるようなので、これで、GCPのサービス間のデータを出し入れはそこそこいける?あとは、コストだろうけど、こういうのを使う仕事にはたどり着けなさそうだし、、、実験レベルでよいか。
以下は、昔の理解 昔の文章みて、成長を実感?
apache beamの google cloud実装。 beam(Batch and Steam) だそう。英語の語感がある人はわかるのかな。
生じた疑問:
batchモードと、streamモードは、
こっちで制御(明示的に指定)? 処理の記述の仕方で決まる(sinkみたいなことをすれば、streamなど。。)? どっち?
大枠理解:
データ処理パイプラインを記述すると、GCP環境で必要なりソースを調達して実行してくれる。
Apache beam の一つの実行環境となってる。
GCPのサービスとして実行すると、処理パイプラインのビジュアライズがつく。ローカルでもdirectrunnerとして動かせる。
簡単なバッチ処理だけなら、cronとかと変わらないかも。 ストリームを
処理できるのが、究極的?にはbuyなところかも。
概略説明:
pipeLineを作成(この際に、pipeline Runnerに依存する部分んを含む実行時のオプションを指定。
Source apiを指定して、外部データの読み込み、それをもとにPcollectionを生成
Transform を実施
IO(sink) APIを使用して、外部ソースにデータを書き込み
指定したPipeline Runnerで実行
参考:
発展形で、このくらいに到達するのが目標。
tutorial5,6,7あたりで、処理(transform)の仕方がのっていて参考になる
beam.Map, beam.GroupByKey, beam.WindowInto(beam.window.FixedWindows(1)),
ちなみに Beam は、BatchとStream の掛け合わせ
参考資料の、 The world beyond batch: Streaming 101, 102 で解説している、 Watermark, Trigger らへんの概念
tweetデータ(csv)の処理
初期の学習メモ
https://gyazo.com/cea889aabbfaeb35635410afc2bf2408